import { defineConfig } from "vite";
import uni from "@dcloudio/vite-plugin-uni";

import AutoImport from "unplugin-auto-import/vite";
import mkcert from "vite-plugin-mkcert";
import Components from "unplugin-vue-components/vite";
import {
	VantResolver,
	ElementPlusResolver,
} from "unplugin-vue-components/resolvers"; 
// https://vitejs.dev/config/
export default defineConfig({
	plugins: [
		uni(),
		// 自动导入 https://github.com/antfu/unplugin-auto-import
		AutoImport({
			imports: [
				"vue",
				// 状态管理库 https://pinia.vuejs.org/zh/
				"pinia",
				// uni-app https://uniapp.dcloud.net.cn/
				"uni-app",
				// 组合式API的实用工具集 https://vueuse.org/
				"@vueuse/core",
				{
					// 微信 JS-SDK https://developers.weixin.qq.com/miniprogram/dev/component/web-view.html
					"weixin-js-sdk": [["default", "wxSdk"]],
					// 日期时间库 https://dayjs.fenxianglu.cn/
					dayjs: [["default", "dayjs"]],
					// 应用配置
					"@/config/app.js": [["default", "appConfig"]],
					// 缓存工具
					"@/utils/cache.js": [["default", "cache"]],
					// 反馈提示
					"@/utils/feedBack.js": [["default", "feedback"]],
					// 用户状态管理
					"@/stores/index.js": [["default", "useTabBarStore"]],
					// 字典数据管理
					"@/stores/dict.js": [["default", "useDictStore"]],
				},
			],
			// 自动导入目录下的模块导出
			dirs: [
				// 自动导入状态管理
				"./src/stores",
			],
			vueTemplate: true,
			resolvers: [ElementPlusResolver()],
			dts: "./auto-imports.d.ts",
			eslintrc: {
				// 注意：如果该插件的配置项有变动时 或者 根目录下没有 `.eslintrc-auto-import.json` 时，需要把 `enabled` 的值改为 `true`
				enabled: true,
				// 全局变量可写配置
				globalsPropValue: "readonly",
			},
		}),
		// 组件自动导入 https://github.com/antfu/unplugin-vue-components
		Components({
			dts: true,
			resolvers: [
				// vant 组件库自动导入 https://vant-contrib.gitee.io/vant/#/zh-CN/quickstart
				VantResolver(),
				// element 组件库自动导入 https://element-plus.org/zh-CN/guide/quickstart.html
				ElementPlusResolver(),
			],
		}),
		// 为 vite https 开发服务提供证书支持 https://github.com/liuweiGL/vite-plugin-mkcert/blob/main/README-zh_CN.md
		mkcert({
			force: true,
		}),
	],
	css: {
		preprocessorOptions: {
			scss: {
				additionalData: `
          @import '@/styles/functions.scss';
          @import '@/styles/mixins.scss';
        `,
			},
		}, 
	},
	build: {
		// 压缩代码方式（`terser` 要比 `esbuild` 压缩的更小）
		minify: "terser",
		// 传递给 `terser` 的更多 minify 选项 https://terser.org/docs/api-reference#minify-options
		terserOptions: {
			// 压缩选项
			compress: {
				// TODO 发布时删除 console
				// drop_console: mode === 'production',
			},
		},
	},
	server: {
		// 自动打开浏览器
		open: false,
		// 是否开启 https
		https: false,
	},
});
